package com.leetCode.easy;

/**
 * 整数反转
 * 没想到思路，
 * 看到网上的解题思路，太强了
 * 1，使用递加的方式
 * 2，转换为字符串，然后反转
 */
public class ReverseInteger {

    //这是使用递加的方式
    public int reverse(int x) {
        //先定义一个long类型的初始值，放在超过int最大值
        long n = 0;
        //当x不等于0，一直循环
        while (x != 0) {
            //从x的个位一直递加，因n乘10，故反转了此整数（对x取余）
            n = n * 10 + x%10;
            //将x减少一位
            x = x/10;
        }
        //将n强转为int类型，若等于long类型的n，没有超过长度
        return (int)n == n ? (int)n : 0;
    }

    //这是使用反转字符串的方式
    public int reverse2(int x){
        //先将x转换为字符串
        String str = String.valueOf(x);
        int flag = 1;
        //判断x的正负
        if (x < 0) {
            flag = -1;
            str = str.substring(1);
        }
        //利用String的api反转字符串
        try {
            return Integer.parseInt(new StringBuffer(str).reverse().toString()) * flag;
        } catch (NumberFormatException e) {
            return 0;
        }
    }


}
